import os
import time
import random
from multiprocessing import Pool,Manager

def rd(q):
    print(f'rd 启动{os.getpid()}, 父进程为{os.getppid()}')
    for i in range(q.size()):
        print('获取到数据：%s'%q.get())

def wd(q):
    print(f'wd 启动{os.getpid()}, 父进程为{os.getppid()}')
    for i in 'python':
        print('wd 中的数据：%s'%i)
        q.put(i)

if __name__ == "__main__":
    print(f'主进程启动{os.getpid()}')
    q = Manager().Queue() # 使用manager中的Queue
    p = Pool()
    p.apply_async(wd, args=(q,)) # 向进程池中添加任务，非阻塞
    p.apply_async(rd, args=(q,)) # 向进程池中添加任务，非阻塞
    p.close() # 关闭进程池，不再接受新的任务
    p.join() # 主进程阻塞等待子进程的退出，join方法要在close或terminate之后使用
    print("所有子进程完成。")
